<?php

    if (! defined('SIMPLE_TEST')) {
        define('SIMPLE_TEST', '../simpletest/');
    }
    require_once(SIMPLE_TEST . 'autorun.php');

    include '../Include/Include.php';


class DBProveedorDAOTest extends UnitTestCase {

    function DBProveedorDAOTest() {
        $this->UnitTestCase();
    }

    public function testselect() {
        $miDBProveedorDAOTest = new DBProveedorDAO();
        $DBConn = null;
        $conexion = new conexion();
        $DBConn = $conexion->setConnect();
        $DBConn->consulta( "INSERT INTO proveedor VALUES (-1, -1,
                            'Prueba Nombre Empresa', 'Prueba Direccion',
                            'Prueba Nombre', 'Prueba Apellido', '0444-444-44-44',
                            'PruebaEmail@gmail.com', 1);" );

        $proveedor = $miDBProveedorDAOTest->select( -1 );

        $this->assertEqual( -1 , $proveedor->getId() );
        $this->assertEqual( -1 , $proveedor->getRif() );
        $this->assertEqual( 'Prueba Nombre Empresa' , $proveedor->getNombreEmpresa() );
        $this->assertEqual( 'Prueba Direccion' , $proveedor->getDireccion() );
        $this->assertEqual( 'Prueba Nombre' , $proveedor->getNombre() );
        $this->assertEqual( 'Prueba Apellido' , $proveedor->getApellido() );
        $this->assertEqual( '0444-444-44-44' , $proveedor->getTelefono() );
        $this->assertEqual( 'PruebaEmail@gmail.com' , $proveedor->getEmail() );

        $DBConn->consulta("DELETE FROM proveedor
                          WHERE PRV_ID = -1" );

    }

    public function testinsert() {
        $miDBProveedorDAOTest = new DBProveedorDAO();
        $DBConn = null;
        $conexion = new conexion();
        $DBConn = $conexion->setConnect();
        $proveedor = new Proveedor( -1 , -1 , 'Prueba Nombre Empresa', 'Prueba Direccion',
                'Prueba Nombre', 'Prueba Apellido', '0444-444-44-44' ,
                'PruebaEmail@gmail.com');


        $miDBProveedorDAOTest->insert($proveedor);
        $proveedorSelect = $miDBProveedorDAOTest->select( -1 );

        $this->assertEqual( $proveedorSelect->getId() , $proveedor->getId() );
        $this->assertEqual( $proveedorSelect->getRif() , $proveedor->getRif() );
        $this->assertEqual( $proveedorSelect->getNombreEmpresa() , $proveedor->getNombreEmpresa() );
        $this->assertEqual( $proveedorSelect->getDireccion() , $proveedor->getDireccion() );
        $this->assertEqual( $proveedorSelect->getNombre() , $proveedor->getNombre() );
        $this->assertEqual( $proveedorSelect->getApellido() , $proveedor->getApellido() );
        $this->assertEqual( $proveedorSelect->getTelefono() , $proveedor->getTelefono() );
        $this->assertEqual( $proveedorSelect->getEmail() , $proveedor->getEmail() );

        $DBConn->consulta("DELETE FROM proveedor
                          WHERE PRV_ID = -1" );

    }

    public function testupdates() {
        $miDBProveedorDAOTest = new DBProveedorDAO();
        $DBConn = null;
        $conexion = new conexion();
        $DBConn = $conexion->setConnect();
        $proveedor = new Proveedor( -1 , -1 , 'Prueba Nombre Empresa', 'Prueba Direccion',
                'Prueba Nombre', 'Prueba Apellido', '0444-444-44-44' ,
                'PruebaEmail@gmail.com');

        $miDBProveedorDAOTest->insert($proveedor);
        $proveedorUpdate = new Proveedor( -1 , -1 , 'Prueba Nombre Empresa Update',
                'Prueba Direccion Update','Prueba Nombre Update', 'Prueba Apellido Update',
                '0555-555-55-55' , 'PruebaEmailUpdate@gmail.com');

        $miDBProveedorDAOTest->update($proveedorUpdate);
        $proveedorSelect = $miDBProveedorDAOTest->select( -1 );

        $this->assertEqual( $proveedorUpdate->getId() , $proveedorSelect->getId() );
        $this->assertEqual( $proveedorUpdate->getRif() , $proveedorSelect->getRif() );
        $this->assertEqual( $proveedorUpdate->getNombreEmpresa() , $proveedorSelect->getNombreEmpresa() );
        $this->assertEqual( $proveedorUpdate->getDireccion() , $proveedorSelect->getDireccion() );
        $this->assertEqual( $proveedorUpdate->getNombre() , $proveedorSelect->getNombre() );
        $this->assertEqual( $proveedorUpdate->getApellido() , $proveedorSelect->getApellido() );
        $this->assertEqual( $proveedorUpdate->getTelefono() , $proveedorSelect->getTelefono() );
        $this->assertEqual( $proveedorUpdate->getEmail() , $proveedorSelect->getEmail() );

        $DBConn->consulta("DELETE FROM proveedor
                          WHERE PRV_ID = -1" );

    }

    public function testdelete() {
        $miDBProveedorDAOTest = new DBProveedorDAO();
        $DBConn = null;
        $conexion = new conexion();
        $DBConn = $conexion->setConnect();
        $proveedor = new Proveedor( -1 , -1 , 'Prueba Nombre Empresa', 'Prueba Direccion',
                'Prueba Nombre', 'Prueba Apellido', '0444-444-44-44' ,
                'PruebaEmail@gmail.com');

        $miDBProveedorDAOTest->insert($proveedor);
        $DBConn->consulta( "SELECT * FROM proveedor
                           WHERE PRV_ID = -1
                           AND PRV_STATUS = 1" );

        $fila = $DBConn->extraer_registro();
        $this->assertEqual( $fila['PRV_STATUS'], 1 );
        $miDBProveedorDAOTest->delete( -1 );
        $fila2 = $DBConn->extraer_registro();
        $this->assertEqual( $fila2['PRV_STATUS'], 0 );

        $DBConn->consulta("DELETE FROM proveedor
                          WHERE PRV_ID = -1" );

    }

    public function testlistaProveedor() {
        $miDBProoveedorDAOTest = new DBProveedorDAO();
        $listaProveedor = $miDBProoveedorDAOTest->listaProveedor();

        foreach ( $listaProveedor as $proveedor ) {
            $this->assertIsA( $proveedor, "Proveedor" );

        }

    }
}

?>
